package com.seari.custody.util;

import java.util.List;
import java.util.Map;
import java.util.Set;

public class HandlerNullUtils {

    /**
     * 将Map中Value为null的值替换成空
     * @param map
     */
    public static void mapValueIsNullRep(Map<String, Object> map) {
        if (objectIsNull(map)) {
            return;
        }
        for (Map.Entry<String, Object> me : map.entrySet()) {
            Object value = me.getValue();
            if (value == null || value.equals("null")) {
                map.put(me.getKey(), "");
            }
        }
    }

    /**
     * 将Map中Value为null的值替换成空
     * @param map
     */
    public static void mapValueIsNullRepByStr(Map<String, String> map) {
        if (objectIsNull(map)) {
            return;
        }
        for (Map.Entry<String, String> me : map.entrySet()) {
            Object value = me.getValue();
            if (value == null || value.equals("null")) {
                map.put(me.getKey(), "");
            }
        }
    }

    /**
     * 判断对象是否为空(支持String、list、map 判断是否为空字符串、size等于零)
     * @param object
     * @return
     */
    public static boolean objectIsNull(Object object) {
        /*
         * 判断对象是否为空
         */
        if (object == null) {
            return true;
        }

        /*
         * 判断对象是否 List类型 如果是判断size大小
         */
        if (object instanceof List) {
            if (((List) object).size() <= 0) {
                return true;
            }
        }

        /*
         * 判断对象是否 Map类型 如果是判断size大小
         */
        if (object instanceof Map) {
            if (((Map) object).size() <= 0) {
                return true;
            }
        }

        /*
         * 判断对象是否 Set类型 如果是判断size大小
         */
        if (object instanceof Set) {
            if (((Set) object).size() <= 0) {
                return true;
            }
        }

        /*
         * 判断对象是否String 类型
         */
        if (object instanceof String) {
            if("null".equals(object)){
                return true;
            }
            return ((String) object).isEmpty();
        }

        return false;
    }

    /**
     * 空对象替换成空字符串
     * @param in
     * @return
     */
    public static Object replaceNull(Object in) {
        if (in == null) {
            return "";
        }
        return in;
    }
}
